Аннотация
Создание разделов хранилища, форматирование их под файловые системы и монтирование для использования
Создание областей подкачки как дополнения к физической памяти и управление ими
Добавление разделов, файловых систем и постоянных смонтированных каталогов (и упражнение)
Управление областью подкачки (и упражнение)
Управление базовым хранилищем
После завершения этого раздела учащиеся смогут создать разделы хранилища, отформатировать их под файловые системы и смонтировать для использования.
Механизм разбиения диска позволяет системным администраторам разделить жесткий диск на несколько логических частей, которые называют разделами. Разделив диск на разделы, системные администраторы смогут использовать их для разных функций.
Вот несколько примеров ситуаций, в которых разбиение дисков необходимо или полезно:
ограничение пространства для приложений или пользователей;
отделение файлов операционной системы и приложений от файлов пользователей;
создание отдельной области для подкачки памяти;
ограничение использования дискового пространства для повышения производительности средств диагностики и создания резервных образов.
Таблица разделов MBR
С 1982 г. таблица разделов Master Boot Record (MBR) описывает способ разбиения дисков в системах, использующих BIOS. Эта таблица поддерживает до четырех основных разделов. В системах Linux администратор может создать до 15 разделов, используя расширенный и логические разделы. Поскольку данные о размере раздела хранятся в виде 32-битных значений, максимальный размер диска и раздела для дисков, использующих MBR, составляет 2 ТиБ.
Поскольку физические диски становятся все больше, а тома на основе SAN еще больше, предел в 2 ТиБ для размера диска и раздела в таблице MBR больше не является величиной, достижимой только в теории. Это уже реальная проблема, с которой системные администраторы все чаще и чаще сталкиваются в производственных средах. В результате старая таблица MBR заменяется новой таблицей разделов GUID (GPT).
Таблица разделов GPT
В системах, использующих Unified Extensible Firmware Interface (UEFI), GPT является стандартом для размещения таблиц разделов на жестких дисках. GPT — это часть стандарта UEFI, которая устраняет многие ограничения устаревшей таблицы MBR.
GPT предоставляет до 128 разделов. В отличие от таблицы MBR, использующей 32-битное поле для хранения адресов секторов и сведений о размере, GPT выделяет для этого 64 бита. Это позволяет GPT использовать разделы и диски размером до 8 зебибайт (ЗиБ) или 8 миллиардов тебибайт.
Помимо устранения ограничений MBR, GPT также предоставляет ряд дополнительных возможностей. GPT использует глобально уникальный идентификатор (GUID) для идентификации каждого диска и раздела. В отличие от таблицы MBR с единой точкой отказа, GPT обеспечивает избыточность данных таблицы разделов. Основная таблица GPT хранится в начале диска, а резервная копия (вторичная таблица GPT) — в конце диска. Кроме того, GPT использует контрольную сумму для обнаружения ошибок и повреждений в заголовке и таблице разделов GPT.
Редакторы разделов — это программы, которые позволяют администраторам изменять таблицы разделов диска, например создавать и удалять разделы, а также менять их тип. Для выполнения этих операций администраторы могут использовать редактор разделов Parted как с MBR, так и с GPT.
Команда parted принимает имя устройства всего диска в качестве первого аргумента и одну или несколько подкоманд. В следующем примере используется подкоманда print для отображения таблицы разделов на диске /dev/vda.
/dev/vda
[root@host ~]# parted /dev/vda print Model: Virtio Block Device (virtblk) Disk /dev/vda: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 10.7GB 10.7GB primary xfs boot 2 10.7GB 53.7GB 42.9GB primary xfs
[root@host ~]#
parted /dev/vda print
Если не указать подкоманду, parted откроет интерактивный сеанс для ввода команд.
[root@host ~]# parted /dev/vda GNU Parted 3.2 Using /dev/vda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print Model: Virtio Block Device (virtblk) Disk /dev/vda: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 10.7GB 10.7GB primary xfs boot 2 10.7GB 53.7GB 42.9GB primary xfs (parted) quit [root@host ~]#
parted /dev/vda
(parted)
print
quit
По умолчанию команда parted отображает все размеры в степенях десятки (КБ, МБ, ГБ). Изменить это значение по умолчанию можно с помощью подкоманды unit, которая принимает следующие параметры:
s для сектора;
s
В для байта;
В
MiB, GiB или TiB (степени двойки);
MiB
GiB
TiB
MB, GB или TB (степени десятки).
MB
GB
TB
[root@host ~]# parted /dev/vda unit s print Model: Virtio Block Device (virtblk) Disk /dev/vda: 104857600s Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 2048s 20971486s 20969439s primary xfs boot 2 20971520s 104857535s 83886016s primary xfs
parted /dev/vda unit s print
Как показано в примере выше, можно указать несколько подкоманд (в примере ― unit и print) в одной строке.
Запись таблицы разделов на новый диск
Чтобы разбить новый диск на разделы, сначала необходимо присвоить ему метку диска. Метка диска указывает используемую таблицу разделов.
Имейте в виду, что команда parted вносит изменения немедленно. Ошибка в команде parted может привести к потере данных.
parted
Как пользователь root используйте следующую команду для присвоения диску метки MBR:
root
[root@host ~]# parted /dev/vdb mklabel msdos
parted /dev/vdb mklabel msdos
vdb
Чтобы присвоить метку GPT, используйте следующую команду:
[root@host ~]# parted /dev/vdb mklabel gpt
parted /dev/vdb mklabel gpt
Подкоманда mklabel стирает существующую таблицу разделов. Применяйте команду mklabel только в том случае, если собираетесь использовать диск повторно, несмотря на потерю существующих данных. Если новая метка изменяет границы раздела, все данные в существующих файловых системах станут недоступны.
Создание разделов MBR
Процедура создания раздела MBR состоит из нескольких шагов.
Укажите дисковое устройство, на котором будет создан раздел.
Выполните команду parted от имени пользователя root, указав имя диска в качестве аргумента. Запустится команда parted в интерактивном режиме и откроется командная строка.
[root@host ~]# parted /dev/vdb GNU Parted 3.2 Using /dev/vdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
parted /dev/vdb
Используйте подкоманду mkpart для создания нового основного или расширенного раздела.
(parted) mkpart Partition type? primary/extended? primary
mkpart
primary
Если на MBR-диске нужно больше четырех разделов, создайте три основных раздела и один расширенный. Расширенный раздел служит контейнером, в котором можно создать несколько логических разделов.
Укажите тип файловой системы, которую необходимо создать для раздела, например xfs или ext4. Это не приведет к созданию файловой системы в разделе. Вы просто указываете нужный тип раздела.
xfs
ext4
File system type? [ext2]? xfs
Чтобы получить список поддерживаемых типов файловой системы, используйте следующую команду:
[root@host ~]# parted /dev/vdb help mkpart mkpart PART-TYPE [FS-TYPE] START END make a partition PART-TYPE is one of: primary, logical, extended FS-TYPE is one of: btrfs, nilfs2, ext4, ext3, ext2, fat32, fat16, hfsx, hfs+, hfs, jfs, swsusp, linux-swap(v1), linux-swap(v0), ntfs, reiserfs, hp-ufs, sun-ufs, xfs, apfs2, apfs1, asfs, amufs5, amufs4, amufs3, amufs2, amufs1, amufs0, amufs, affs7, affs6, affs5, affs4, affs3, affs2, affs1, affs0, linux-swap, linux-swap(new), linux-swap(old) START and END are disk locations, such as 4GB or 10%. Negative values count from the end of the disk. For example, -1s specifies exactly the last sector. 'mkpart' makes a partition without creating a new file system on the partition. FS-TYPE may be specified to set an appropriate partition ID.
parted /dev/vdb help mkpart
btrfs, nilfs2, ext4, ext3, ext2, fat32, fat16, hfsx,
hfs+, hfs, jfs, swsusp, linux-swap(v1), linux-swap(v0), ntfs, reiserfs,
hp-ufs, sun-ufs, xfs, apfs2, apfs1, asfs, amufs5, amufs4, amufs3,
amufs2, amufs1, amufs0, amufs, affs7, affs6, affs5, affs4, affs3, affs2,
affs1, affs0, linux-swap, linux-swap(new), linux-swap(old)
Укажите сектор диска, с которого начнется новый раздел.
Start? 2048s
2048s
Обратите внимание на суффикс s, указывающий значение в секторах. Также можно использовать суффиксы MiB, GiB, TiB, MB, GB и TB. Если суффикс не указан, по умолчанию используется MB. Команда parted может округлить указанное значение согласно ограничениям диска.
При запуске parted получает топологию диска с устройства. Например, parted получает информацию о размере физического блока диска. На основе этой информации parted обеспечивает правильное размещение раздела в структуре диска согласно указанной вами начальной позиции. Правильное выравнивание разделов ― важный фактор для обеспечения оптимальной производительности. Если начальная позиция смещает раздел, parted выдаст предупреждение. Для большинства дисков рекомендуется использовать начальный сектор, кратный числу 2048.
Укажите сектор диска, где должен заканчиваться новый раздел.
End? 1000MB
1000MB
С помощью команды parted нельзя напрямую указать размер раздела, но его можно быстро вычислить по следующей формуле:
Size = End - Start
Как только вы укажете конечную позицию, parted внесет сведения о новом разделе в таблицу разделов на диске.
Выйдите из parted.
(parted) quit Information: You may need to update /etc/fstab. [root@host ~]#
Выполните команду udevadm settle. Она ждет, пока система обнаружит новый раздел и создаст соответствующий файл устройства в каталоге /dev. Команда возвращает управление только после завершения всех операций.
/dev
[root@host ~]# udevadm settle [root@host ~]#
udevadm settle
В качестве альтернативы интерактивному режиму создать раздел также можно следующим образом:
[root@host ~]# parted /dev/vdb mkpart primary xfs 2048s 1000MB
parted /dev/vdb mkpart primary xfs 2048s 1000MB
Создание разделов GPT
Для создания разделов GTP также используется команда parted.
Как пользователь root, выполните команду parted, указав в качестве единственного аргумента дисковое устройство, чтобы запустить parted в интерактивном режиме с командной строкой.
Используйте подкоманду mkpart, чтобы начать создание нового раздела.
В таблице GPT каждому разделу присваивается имя.
(parted) mkpart Partition name? []? usersdata
usersdata
[root@host ~]# parted /dev/vdb mkpart usersdata xfs 2048s 1000MB
parted /dev/vdb mkpart usersdata xfs 2048s 1000MB
Удаление разделов
Следующие шаги применяются как для MBR, так и для GPT.
Укажите диск, содержащий раздел, который необходимо удалить.
Укажите номер раздела, который нужно удалить.
(parted) print Model: Virtio Block Device (virtblk) Disk /dev/vdb: 5369MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 1000MB 999MB xfs usersdata
1
Удалите раздел.
(parted) rm 1
rm 1
Подкоманда rm сразу удаляет раздел из таблицы разделов на диске.
После создания блочного устройства следующим шагом будет добавление на него файловой системы. Red Hat Enterprise Linux поддерживает различные типы файловых систем, из них наиболее часто используются XFS и ext4. Anaconda (установщик Red Hat Enterprise Linux) по умолчанию использует XFS.
Как пользователь root используйте команду mkfs.xfs, чтобы добавить на блочное устройство файловую систему XFS. Чтобы добавить файловую систему ext4, используйте команду mkfs.ext4.
[root@host ~]# mkfs.xfs /dev/vdb1 meta-data=/dev/vdb1 isize=512 agcount=4, agsize=60992 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=243968, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=1566, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
mkfs.xfs /dev/vdb1
vdb1
После добавления файловой системы следующим шагом будет монтирование ее в каталог в структуре каталогов. После того как файловая система будет смонтирована в иерархию каталогов, пользовательские программы смогут читать и записывать файлы на этом устройстве.
Монтирование файловых систем вручную
С помощью команды mount администраторы могут вручную присоединить устройство к каталогу или точке монтирования. Команда mount принимает в качестве аргументов устройство, точку монтирования и параметры файловой системы. Параметры файловой системы определяют ее поведение.
[root@host ~]# mount /dev/vdb1 /mnt
mount /dev/vdb1 /mnt
С помощью команды mount также можно просмотреть смонтированные файловые системы, точки монтирования и параметры.
[root@host ~]# mount | grep vdb1 /dev/vdb1 on /mnt type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
mount | grep vdb1
Монтирование файловых систем на постоянной основе
Монтирование файловой системы вручную — прекрасный способ убедиться, что отформатированное устройство доступно и работает так, как ожидается. Однако при перезагрузке сервера система не монтирует автоматически файловую систему в дерево каталогов. Данные остаются в файловой системе, но у пользователей нет доступа к ним.
Чтобы при загрузке системы автоматически монтировалась файловая система, добавьте запись в файл /etc/fstab. В этом файле конфигурации указаны файловые системы, монтируемые при загрузке системы.
/etc/fstab
/etc/fstab ― это файл, содержащий по шесть полей в каждой строке, с пробелом в качестве разделителя.
[root@host ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Feb 13 16:39:59 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # UUID=a8063676-44dd-409a-b584-68be2c9f5570 / xfs defaults 0 0 UUID=7a20315d-ed8b-4e75-a5b6-24ff9e1f9838 /dbdata xfs defaults 0 0
cat /etc/fstab
После добавления или удаления записи в файле /etc/fstab необходимо выполнить команду systemctl daemon-reload или перезагрузить сервер, чтобы демон systemd зарегистрировал новую конфигурацию.
systemd
[root@host ~]# systemctl daemon-reload
systemctl daemon-reload
В первом поле указано устройство. В этом примере для указания устройства используется UUID. Файловые системы создают и сохраняют UUID в своем суперблоке во время создания. Вы также можете использовать файл устройства, например /dev/vdb1.
/dev/vdb1
Рекомендуется использовать UUID, так как имя файла блочного устройства может измениться в определенных ситуациях, например поставщик облачных услуг может изменить базовый уровень хранилища виртуальной машины или при начальной загрузке системы может измениться порядок обнаружения дисков. Имя файла блочного устройства может измениться, но UUID остается неизменным в суперблоке файловой системы.
Используйте команду lsblk --fs для сканирования блочных устройств, подключенных к машине, и получения UUID файловой системы.
[root@host ~]# lsblk --fs NAME FSTYPE LABEL UUID MOUNTPOINT sr0 vda └─vda1 xfs a8063676-44dd-409a-b584-68be2c9f5570 / vdb └─vdb1 xfs 7a20315d-ed8b-4e75-a5b6-24ff9e1f9838 /dbdata
lsblk --fs
Второе поле — это точка монтирования каталога, из которой блочное устройство будет доступно в структуре каталогов. Точка монтирования уже должна существовать. Если это не так, создайте ее с помощью команды команду mkdir.
Третье поле содержит тип файловой системы, например xfs или ext4.
Четвертое поле ― это разделенный запятыми список опций, применяемых к устройству. defaults — это набор наиболее часто используемых опций. На man-странице mount(8) описаны также другие доступные опции.
defaults
Пятое поле используется командой dump для резервного копирования устройства. Другие приложения резервного копирования обычно к данному полю не обращаются.
Последнее поле — порядок выполнения fsck. Оно определяет, должна ли команда fsck выполняться при загрузке системы для обеспечения чистоты файловых систем. Значение в этом поле указывает порядок выполнения команды fsck. Для файловых систем XFS задайте в этом поле значение 0, поскольку XFS не использует fsck для проверки статуса файловой системы. В случае файловых систем ext4 задайте значение 1 для корневой файловой системы и 2 для других файловых систем ext4. fsck сначала обработает корневую файловую систему, а затем параллельно проверит файловые системы на отдельных дисках и последовательно файловые системы на одном диске.
0
2
Если в файле /etc/fstab будет задана неправильная запись, возможны проблемы с загрузкой машины. Администратору необходимо проверить правильность записи: размонтировать новую файловую систему и с помощью команды mount /mountpoint, которая читает файл /etc/fstab, снова смонтировать ее. Если команда mount вернет ошибку, исправьте, прежде чем перезагружать машину.
mountpoint
Для проверки файла /etc/fstab также можно использовать команду findmnt --verify.
info parted (руководство пользователя GNU Parted)
Man-страницы parted(8), mkfs(8), mount(8), lsblk(8) и fstab(5)
fstab
Дополнительные сведения см. в руководстве Configuring and managing file systems: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/configuring_and_managing_file_systems/